package com.thy.aop;

public enum LogAction {
    // 定义具体的日志行为枚举常量（id, 行为描述）

    POST_APPROVED(1L, "帖子审核并且通过"),
    POST_REVIEW_REJECTED(2L, "帖子审核拒绝并删除被审核帖子"),
    Report_APPROVED_AND_DELETE_POSt(3L, "举报审核通过并删除被审核帖子/评论"),
    Report_APPROVED_AND_DELETE_CONTENT(4L, "举报审核通过并删除被审核评论回复"),
    Report_REVIEW_REJECTED(5L, "举报审核拒绝"),
    POST_DELETED(6L, "帖子删除"),
    CONTENT_DELETED(7L, "评论回复删除"),
    SECTION_CREATED(8L, "板块创建"),
    SECTION_DELETED(9L, "板块删除"),
    SECTION_UPDATED(10L, "板块编辑"),
    BAN(11L, "封禁"),
    UNBAN(12L, "解封");


    // 日志行为ID
    private final Long id;
    // 日志行为描述
    private final String action;
    /**
     * 私有构造方法，初始化枚举常量
     * @param id 行为ID
     * @param action 行为描述
     */
    LogAction(Long id, String action) {
        this.id = id;
        this.action = action;
    }
    /**
     * 获取日志行为ID
     * @return 行为ID
     */
    public Long getId() {
        return id;
    }

    /**
     * 获取日志行为描述
     * @return 行为描述
     */
    public String getAction() {
        return action;
    }

    /**
     * 根据ID获取对应的日志行为枚举
     * @param id 行为ID
     * @return 对应的枚举常量，若不存在则返回null
     */
    public static LogAction getById(Long id) {
        for (LogAction action : LogAction.values()) {
            if (action.getId().longValue() == id) {
                return action;
            }
        }
        return null;
    }
}
